//JOBDCOL2 JOB ...
//**JOBLIB   DD ...   DFSORT R14
//******************************************************************
//* DCOLLECT EXAMPLE 2: CONVERSION REPORTS
//*   ASSIGN ENGLISH DESCRIPTIONS TO BIT FLAGS TO SHOW MIGRATION
//*   STATUS OF VOLUMES (IN CONVERSION, MANAGED BY SMS AND
//*   NON-SMS MANAGED).
//******************************************************************
//SYM  EXEC  PGM=ICETOOL
//TOOLMSG  DD SYSOUT=*   ICETOOL MESSAGES
//DFSMSG   DD SYSOUT=*   DFSORT  MESSAGES
//SYMNAMES DD DSN=Y897797.DCOL14.SYM(HEADER),DISP=SHR
//         DD DSN=Y897797.DCOL14.SYM(TYPEV),DISP=SHR
//         DD *
* MAP TEMPORARY STATUS DATA SET
V_VOLSER,1,6,CH
V_STATUS,7,20,CH
//TOOLIN   DD *          CONTROL STATEMENTS
* PART 1 - ADD IDENTIFYING STATUS (FLAG) DESCRIPTION FOR 'MANAGED',
*          'IN CONVERSION' AND 'NON-MANAGED' VOLUME RECORDS
   COPY FROM(DCOLALL) USING(FLAG)
* PART 2 - PRINT REPORT SHOWING COUNT OF EACH STATUS TYPE
   OCCUR FROM(STATUS) LIST(REPORTS) -
    TITLE('STATUS COUNT REPORT') DATE -
    BLANK -
    HEADER('STATUS') ON(V_STATUS) -
    HEADER('NUMBER OF VOLUMES') ON(VALCNT)
* PART 3 - PRINT REPORT SORTED BY VOLUMES AND STATUS
  SORT FROM(STATUS) TO(SRTVOUT) USING(SRTV)
  DISPLAY FROM(SRTVOUT) LIST(REPORTV) -
    TITLE('VOLUME/STATUS REPORT') DATE PAGE -
    BLANK -
    HEADER('VOLUME') ON(V_VOLSER) -
    HEADER('STATUS') ON(V_STATUS)
* PART 4 - PRINT REPORT SORTED BY STATUS AND VOLUMES
  SORT FROM(STATUS) TO(SRTIOUT) USING(SRTI)
  DISPLAY FROM(SRTIOUT) LIST(REPORTI) -
    TITLE('STATUS/VOLUME REPORT') DATE PAGE -
    BLANK -
    HEADER('STATUS') ON(V_STATUS) -
    HEADER('VOLUME') ON(V_VOLSER)
//DCOLALL DD DSN=Y897797.DCOLLECT.OUTPUT,DISP=SHR
//STATUS   DD DSN=&&TEMP1,DISP=(,PASS),UNIT=SYSDA,
//  LRECL=50,RECFM=FB,DSORG=PS,
//  SPACE=(CYL,(10,10))
//SRTVOUT  DD DSN=&&TEMP2,DISP=(,PASS),UNIT=SYSDA,
//  SPACE=(CYL,(10,10))
//SRTIOUT  DD DSN=&&TEMP3,DISP=(,PASS),UNIT=SYSDA,
//  SPACE=(CYL,(10,10))
//FLAGCNTL DD *
* FIND V-TYPE RECORDS WITH STATUS FLAGS OF INTEREST
  INCLUDE COND=(DCURCTYP,CH,EQ,DCUVULUT,AND,
                (DCVFLAG1,EQ,DCVMANGD,OR,
                 DCVFLAG1,EQ,DCVINITL,OR,
                 DCVFLAG1,EQ,DCVNMNGD))
* CREATE RECFM=FB OUTPUT RECORDS WITH VOLSER AND STATUS DESCRIPTION.
* LOOKUP/CHANGE TABLE -
*   FLAG          DESCRIPTION
*   ----------    ---------------------
*   DCVMANGD      MANAGED BY SMS
*   DCVINITL      IN CONVERSION TO SMS
*   DCVNMNGD      NON-SMS MANAGED

  OUTFIL FNAMES=STATUS,CONVERT,
    OUTREC=(DCVVOLSR,
      DCVFLAG1,CHANGE=(20,
            DCVMANGD,C'MANAGED BY SMS',
            DCVINITL,C'IN CONVERSION TO SMS',
            DCVNMNGD,C'NON-SMS MANAGED'),
      50:X)
//REPORTS DD SYSOUT=*
//SRTVCNTL DD *
* SORT BY VOLUME AND INDENTIFYING STATUS STRING
  SORT FIELDS=(V_VOLSER,A,V_STATUS,A)
//SRTICNTL DD *
* SORT BY INDENTIFYING STATUS STRING AND VOLUME
  SORT FIELDS=(V_STATUS,A,V_VOLSER,A)
//REPORTV DD SYSOUT=*
//REPORTI DD SYSOUT=*
//*
